

"""字符串"""
s1 = '\141\142\143\x61\x62\x63'
s2 = '\u9a86\u660a'
print(s1, s2)

s1 = r'\'hello, world!\''
s2 = r'\n\\hello, world!\\\n'
print(s1, s2, end='')
print('\n')

s1 = 'hello ' * 3
print(s1, end='\n')
s2 = 'world'
s1 += s2
print(s1, end='\n')
print('ll' in s1, end='\n')
print('good' in s1, end='\n')

str1 = 'abc123456'
# 取索引为1后面的所有字符串
print(str1[1:], end='\n')
# 取索引为1的字符
print(str1[1], end='\n')
# 取索引为1到索引为3之间的字符，左闭右开
print(str1[1:3], end='\n')
# 取索引为1后面的所有字符，步长为 2，即 b135
print(str1[1::2], end='\n')
# 取索引为0后面的所有字符，步长为 2，即 ac246
print(str1[::2], end='\n')
# 取反转后的所有字符 654321cba
print(str1[::-1], end='\n')
print(str1[2::-1], end='\n')
# 从右往前取
print(str1[-3:-1])
print('\n')

str1 = 'hello world'
# 计算字符串长度
print(len(str1), end='\n')
# 获取字符串首字母大写的拷贝
print(str1.capitalize(), end='\n')
# 获取字符串每个单词首字母大写的拷贝
print(str1.title(), end='\n')
# 字符串转大写
print(str1.upper(), end='\n')
# 返回子字符串在字符串的位置
print(str1.find('or'), end='\n')
# 返回一个不存在的子字符串的位置
print(str1.find('shit'), end='\n')
# 返回子字符串在字符串的位置
print(str1.index('or'), end='\n')
# print(str1.index('shit'), end='\n')
# 检查字符串是否以指定字符串开头
print(str1.startswith('He'), end='\n')
print(str1.startswith('hel'), end='\n')
# 检查字符是否以指定字符串结尾
print(str1.endswith('lD'), end='\n')
print(str1.endswith('ld'), end='\n')
# 将字符串以指定的宽度据中并在两侧填充指定的字符
print(str1.center(50, '*'), end='\n')
# 将字符串以指定的宽度靠右放置，左侧填充指定字符
print(str1.rjust(50, '*'), end='\n')
# 将字符串以指定的宽度靠左放置，右侧填充指定字符
print(str1.ljust(50, '*'), end='\n')

str2 = 'abc123456'
# 检查字符串是否由数字构成
print(str2.isdigit(), end='\n')
# 检查字符串是否由字母构成
print(str2.isalpha(), end='\n')
# 检查字符串是否由字母和数字构成
print(str2.isalnum(), end='\n')

str3 = ' zhiqiang@addcn.com '
# 去除字符串两侧空格
print(str3.strip(), end='\n')

# 格式化输出
a, b = 5, 10
print('%d * %d = %d' % (a, b, a*b))
print('{0} * {1} = {2}'.format(a, b, a*b))
print(f'{a} * {b} = {a * b}', end='\n')
